/*
#include <stack>
#include <math.h>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <vector>
#include <iostream>
#include <sstream>
using namespace std;
vector<string> grayCodeStr(int n){
	vector<string>result;
	string str="";
	if(n==0){
		result.push_back("0");
		return result;
	}
	if(n==1){
		result.push_back("0");
		result.push_back("1");
		return result;
	}else{
		vector<string>former=grayCodeStr(n-1);
		int num=pow(2,n-1);
		for(int i=0;i<num;i++){
			result.push_back("0"+former[i]);
		}
		for(int i=num-1;i>=0;i--){
			result.push_back("1"+former[i]);
		}
		return result;
	}
}
vector<int> grayCode(int n) {
	vector<int>result;
	vector<string>code;
	code=grayCodeStr(n);
	for(int i=0;i<code.size();i++){
		string str=code[i];
		int x=0,mul=1;
		for(int i=str.length()-1;i>=0;i--,mul*=2){
			x+=mul*(str[i]-'0');
		}
		result.push_back(x);
	}
	return result;
}
int main(){
	int a[]={2,1,5,6,2,3};
	vector<int> nums1(a,a+sizeof(a)/sizeof(int));
	grayCode(0);
	cout<<endl;
	system("pause");
}
*/